1670C - Where is the Pizza - CodeForces Solution


data structures dfs and similar dsu graphs implementation math *1400

Please click on ads to support us..

C++ Code:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
int a[1000005],b[1000005],d[1000005],f[1000005],tag[1000005];
int find(int x)
{
    if(x==f[x])return x;
    return f[x]=find(f[x]);
}
void merge(int x,int y)
{
    x=find(x);
    y=find(y);
    f[y]=x;
}
bool same(int x,int y)
{
    return find(x)==find(y);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int tt;
    cin>>tt;
    while(tt--)
    {
        int n;
        cin>>n;
        for(int i=0;i<=n;i++)
        {
            f[i]=i;
            tag[i]=0;
        }
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<=n;i++)cin>>b[i];
        for(int i=1;i<=n;i++)cin>>d[i];
        for(int i=1;i<=n;i++)
        {
            if(d[i])merge(0,d[i]);
        }
        for(int i=1;i<=n;i++)
        {
            if(a[i]==b[i])merge(0,a[i]);
        }
        for(int i=1;i<=n;i++)
        {
            merge(a[i],b[i]);
        }
        long long ans=1;
        for(int i=1;i<=n;i++)
        {
            if(same(0,i))continue;
            if(tag[find(i)]==0)
            {
                tag[find(i)]=1;
                ans*=2;
                ans%=1000000007;
            }
        }
        cout<<ans<<'\n';
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1651D - Nearest Excluded Points
599A - Patrick and Shopping
237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization
864A - Fair Game
1663B - Mike's Sequence
448A - Rewards
1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad